![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╤σ≥σΓ√σ ∩≡ΦδεµσφΦ |
└∩δσ≥ Form═α ∩≡Φ∞σ≡σ α∩δσ≥α Form ∞√ ∩εΩαµσ∞, ΩαΩ ∩≡ΦδεµσφΦ Java ∞επ≤≥ ΓταΦ∞εΣσΘ±≥ΓεΓα≥ⁿ ± ≡α±°Φ≡σφΦ ∞Φ ±σ≡Γσ≡α Web, ≥αΩΦ∞Φ ΩαΩ ∩≡επ≡α∞∞√ CGI ΦδΦ ∩≡ΦδεµσφΦ ISAPI. ┬ εΩφσ φα°σπε α∩δσ≥α φα⌡εΣΦ≥± ⌠ε≡∞α, ±εΣσ≡µα∙α ΣΓα εΣφε±≥≡ε≈φ√⌡ ∩εδ ≡σΣαΩ≥Φ≡εΓαφΦ , Ωφε∩Ω≤ Φ ∞φεπε±≥≡ε≈φεσ ∩εδσ ≡σΣαΩ≥Φ≡εΓαφΦ (≡Φ±. 5). ╨Φ±. 5. ╬Ωφε α∩δσ≥α Form ▌≥α ⌠ε≡∞α ∩≡σΣφατφα≈σφα Σδ ΣεßαΓδσφΦ τα∩Φ±σΘ Γ ßατ≤ Σαφφ√⌡, ±εΣσ≡µα∙≤■ ²δσΩ≥≡εφφ√σ ∩ε≈≥εΓ√σ αΣ≡σ±α. ╟α∩εδφΦΓ ∩εδ Φ∞σφΦ Φ αΣ≡σ±α E-Mail, ∩εδⁿτεΓα≥σδⁿ Σεδµσφ φαµα≥ⁿ Ωφε∩Ω≤ Send. ╧≡Φ ²≥ε∞ ΓΓσΣσφφα Φφ⌠ε≡∞α÷Φ ß≤Σσ≥ ∩σ≡σΣαφα ≡α±°Φ≡σφΦ■ ±σ≡Γσ≡α CGI, Ωε≥ε≡√Θ τα∩Φ°σ≥ σσ Γ ßατ≤ Σαφφ√⌡, α τα≥σ∞ ε≥∩≡αΓΦ≥ εß≡α≥φε α∩δσ≥≤. ╤ε⌡≡αφσφφ√σ τα∩Φ±Φ, ∩εδ≤≈σφφ√σ ε≥ ∩≡επ≡α∞∞√ CGI, α∩δσ≥ FORM ε≥εß≡ατΦ≥ Γ ∞φεπε±≥≡ε≈φε∞ ∩εδσ ≡σΣαΩ≥Φ≡εΓαφΦ , ΩαΩ ²≥ε ∩εΩαταφε φα ≡Φ±. 5. ╚±⌡εΣφ√σ ≥σΩ±≥√ α∩δσ≥α Form╚±⌡εΣφ√σ ≥σΩ±≥√ α∩δσ≥α Form ∩≡σΣ±≥αΓδσφ√ Γ δΦ±≥Φφπσ 5. ╦Φ±≥Φφπ 5. ╘αΘδ Form.java import java.applet.*; import java.awt.*; import java.net.*; import java.io.*; import java.util.*; public class Form extends Applet implements Runnable { private Thread m_store = null; TextField txtName; TextField txtEMail; TextArea txta; Button btnGetText; public void init() { Label lbName; Label lbEMail; Label lbPress; lbName = new Label("Enter your name:"); lbEMail = new Label( "Enter your E-Mail address:"); add(lbName); txtName = new TextField("Your name", 40); add(txtName); add(lbEMail); txtEMail = new TextField("your@email", 40); add(txtEMail); btnGetText = new Button("Send!"); add(btnGetText); txta = new TextArea(8, 65); add(txta); setBackground(Color.yellow); } public void paint(Graphics g) { setBackground(Color.yellow); Dimension dimAppWndDimension = getSize(); g.setColor(Color.black); g.drawRect(0, 0, dimAppWndDimension.width - 1, dimAppWndDimension.height - 1); } public boolean action(Event evt, Object obj) { Button btn; if(evt.target instanceof Button) { btn = (Button)evt.target; if(evt.target.equals(btnGetText)) { startTransaction(); } else return false; return true; } return false; } void startTransaction() { m_store = new Thread(this); m_store.start(); } public void stop() { if (m_store != null) { m_store.stop(); m_store = null; } } public void run() { URL u; URLConnection c; PrintStream ps; DataInputStream is; try { String szSourceStr = txtName.getText() + ", " + txtEMail.getText(); String szReceived; String szURL = "http://frolov/scripts/store.exe"; u = new URL(szURL); c = u.openConnection(); ps = new PrintStream( c.getOutputStream()); ps.println(szSourceStr); ps.close(); is = new DataInputStream( c.getInputStream()); szReceived = is.readLine(); is.close(); txta.appendText(szReceived + "\r\n"); repaint(); } catch (Exception ioe) { showStatus(ioe.toString()); stop(); } } } ╚±⌡εΣφ√Θ ≥σΩ±≥ ΣεΩ≤∞σφ≥α HTML, Ωε≥ε≡√Θ ß√δ ∩εΣπε≥εΓδσφ Σδ φα± ±Φ±≥σ∞εΘ Java Workshop, ∞√ φσ∞φεπε ε≥≡σΣαΩ≥Φ≡εΓαδΦ, Φτ∞σφΦΓ ∩α≡α∞σ≥≡ CODEBASE (δΦ±≥Φφπ 6). ╦Φ±≥Φφπ 6. ╘αΘδ Form.tmp.html <applet name="Form" code="Form.class" codebase="http://frolov/" width="500" height="200" align="Top" alt="If you had a java-enabled browser, you would see an applet here."> <hr>If your browser recognized the applet tag, you would see an applet here.<hr> </applet> ┬ ²≥ε∞ ∩α≡α∞σ≥≡σ ±δσΣ≤σ≥ ≤Ωατα≥ⁿ ∩≤≥ⁿ Ω Ωα≥αδεπ≤, Γ Ωε≥ε≡ε∞ ≡α±∩εδαπασ≥± ßαΘ≥-ΩεΣ α∩δσ≥α. ╬∩Φ±αφΦσ Φ±⌡εΣφ√σ⌡ ≥σΩ±≥εΓ α∩δσ≥α Form╧≡Φ ΦφΦ÷ΦαδΦτα÷ΦΦ ∞σ≥εΣ init ±ετΣασ≥ Γ±σ φσεß⌡εΣΦ∞√σ ε≡παφ√ ≤∩≡αΓδσφΦ Φ ΣεßαΓδ σ≥ Φ⌡ Γ εΩφε α∩δσ≥α. ╩επΣα ∩εδⁿτεΓα≥σδⁿ τα∩εδφ σ≥ ⌠ε≡∞≤ Φ φαµΦ∞ασ≥ Ωφε∩Ω≤ Send, εß≡αßε≥≈ΦΩ ±εε≥Γσ≥±≥Γ≤■∙σπε ±εß√≥Φ Γ√τ√Γασ≥ ∞σ≥εΣ startTransaction, τα∩≤±Ωα■∙ΦΘ ∩≡ε÷σ±± εß∞σφα Σαφφ√∞Φ ± ≡α±°Φ≡σφΦσ∞ ±σ≡Γσ≡α Web: if(evt.target.equals(btnGetText)) { startTransaction(); } ╠σ≥εΣ startTransaction, ε∩≡σΣσδσφφ√Θ Γ φα°σ∞ ∩≡ΦδεµσφΦΦ, ±ετΣασ≥ Φ τα∩≤±Ωασ≥ φα Γ√∩εδφσφΦσ ∩ε≥εΩ, Ωε≥ε≡√Θ Φ ß≤Σσ≥ ΓταΦ∞εΣσΘ±≥ΓεΓα≥ⁿ ± ∩≡επ≡α∞∞εΘ CGI: void startTransaction() { m_store = new Thread(this); m_store.start(); } ╧≡Φ ²≥ε∞ Γ Ωα≈σ±≥Γσ ε≥Σσδⁿφεπε ∩ε≥εΩα, ≡αßε≥α■∙σπε εΣφεΓ≡σ∞σφφε ± ΩεΣε∞ α∩δσ≥α, Γ√±≥≤∩ασ≥ ∞σ≥εΣ run. ╚∞σφφε Γ φσ∞ ±ε±≡σΣε≥ε≈σφα Γ± δεπΦΩα εß∞σφα Σαφφ√∞Φ ± ±σ≡Γσ≡ε∞ Web. ╥αΩ ΩαΩ Γ ∩≡ε÷σ±±σ ΓταΦ∞εΣσΘ±≥ΓΦ ∞επ≤≥ ΓετφΦΩα≥ⁿ ≡ατδΦ≈φ√σ Φ±Ωδ■≈σφΦ , ∞√ ∩≡σΣ≤±∞ε≥≡σδΦ Φ⌡ εß≡αßε≥Ω≤ ∩≡Φ ∩ε∞ε∙Φ ßδεΩα try-catch: URL u; URLConnection c; PrintStream ps; DataInputStream is; try { . . . } catch (Exception ioe) { showStatus(ioe.toString()); stop(); } ═ατΓαφΦσ ΓετφΦΩ°σπε Φ±Ωδ■≈σφΦ ß≤Σσ≥ ε≥εß≡αµσφε Γ ±≥≡εΩσ ±ε±≥ε φΦ ß≡α≤τσ≡α. ╥σ∩σ≡ⁿ ε ≥ε∞, ≈≥ε Σσδασ≥ ∞σ≥εΣ run ∩ε±δσ ∩εδ≤≈σφΦ ≤∩≡αΓδσφΦ . ╧σ≡Γ√∞ Σσδε∞ εφ ΦτΓδσΩασ≥ Φτ εΣφε±≥≡ε≈φ√⌡ ≥σΩ±≥εΓ√⌡ ∩εδσΘ Φ∞ Φ ²δσΩ≥≡εφφ√Θ αΣ≡σ±, εß·σΣΦφ Φ⌡ Φ τα∩Φ±√Γα ∩εδ≤≈σφφ≤■ ≥σΩ±≥εΓ≤■ ±≥≡εΩ≤ Γ ∩εδσ szSourceStr: String szSourceStr = txtName.getText() + ", " + txtEMail.getText(); ┬ ±≥≡εΩσ szURL φα⌡εΣΦ≥± αΣ≡σ± URL ∩≡επ≡α∞∞√ CGI: String szURL = "http://frolov/scripts/store.exe"; ┬ ≡σαδⁿφε∞ ∩≡ΦδεµσφΦΦ ²≥ε≥ αΣ≡σ± φσεß⌡εΣΦ∞ε ∩σ≡σΣαΓα≥ⁿ α∩δσ≥≤ ≈σ≡στ ∩α≡α∞σ≥≡. ╠√ Φ±∩εδⁿτεΓαδΦ φσ∩ε±≡σΣ±≥Γσφφεσ ΩεΣΦ≡εΓαφΦσ ≥εδⁿΩε Σδ ≤∩≡ε∙σφΦ Φ±⌡εΣφεπε ≥σΩ±≥α. ═α ±δσΣ≤■∙σ∞ ²≥α∩σ ∞σ≥εΣ run ±ετΣασ≥ Σδ ∩≡επ≡α∞∞√ CGI εß·σΩ≥ Ωδα±±α URL Φ ε≥Ω≡√Γασ≥ ± φΦ∞ ±εσΣΦφσφΦσ: u = new URL(szURL); c = u.openConnection(); ╧εδⁿτ≤ ±ⁿ ²≥Φ∞ ±εσΣΦφσφΦσ∞, ∞σ≥εΣ run ±ετΣασ≥ ⌠ε≡∞α≥Φ≡εΓαφφ√Θ ∩ε≥εΩ Γ√ΓεΣα, τα∩Φ±√Γασ≥ Γ φσπε ±≥≡εΩ≤ Φ∞σφΦ Φ ²δσΩ≥≡εφφεπε αΣ≡σ±α, α τα≥σ∞ ταΩ≡√Γασ≥ ∩ε≥εΩ: ps = new PrintStream(c.getOutputStream()); ps.println(szSourceStr); ps.close(); ╧σ≡σΣαφφ√σ ≥αΩΦ∞ εß≡ατε∞ Σαφφ√σ ∩ε∩αΣ≤≥ Γ ±≥αφΣα≡≥φ√Θ ∩ε≥εΩ ΓΓεΣα ∩≡επ≡α∞∞√ CGI, ε≥Ω≤Σα εφα Φ⌡ Φ ∩≡ε≈Φ≥ασ≥. ╤ΣσδαΓ ²≥ε, ∩≡επ≡α∞∞α CGI τα∩Φ°σ≥ Γ ±≥αφΣα≡≥φ√Θ Γ√⌡εΣφεΘ ∩ε≥εΩ ±≥≡εΩ≤ ε≥Γσ≥α, Ωε≥ε≡≤■ φσεß⌡εΣΦ∞ε ∩≡ε≈Φ≥α≥ⁿ Γ ∞σ≥εΣσ run φα°σπε α∩δσ≥α. ─δ ²≥επε ∞√ ε≥Ω≡√Γασ∞ Γ⌡εΣφεΘ ∩ε≥εΩ, ±ετΣασ∞ φα σπε ε±φεΓσ ⌠ε≡∞α≥Φ≡εΓαφφ√Θ Γ⌡εΣφεΘ ∩ε≥εΩ Σαφφ√⌡, ≈Φ≥ασ∞ εΣφ≤ ±≥≡εΩ≤ ≥σΩ±≥α Φ ταΩ≡√Γασ∞ Γ⌡εΣφεΘ ∩ε≥εΩ: is = new DataInputStream(c.getInputStream()); String szReceived; szReceived = is.readLine(); is.close(); ╤≡ατ≤ ∩ε±δσ ²≥επε ∩≡επ≡α∞∞α CGI ταΓσ≡°Φ≥ ±Γε■ ≡αßε≥≤ Φ ß≤Σσ≥ πε≥εΓα Ω εß≡αßε≥Ωσ φεΓ√⌡ τα∩≡ε±εΓ φα ΣεßαΓδσφΦσ τα∩Φ±σΘ. ╫≥ε µσ Ωα±ασ≥± ∞σ≥εΣα run, ≥ε εφ ΣεßαΓΦ≥ ∩εδ≤≈σφφ≤■ ε≥ ≡α±°Φ≡σφΦ ±σ≡Γσ≡α ≥σΩ±≥εΓ≤■ ±≥≡εΩ≤ Γ ∞φεπε±≥≡ε≈φεσ εΩφε ≡σΣαΩ≥Φ≡εΓαφΦ , ΩαΩ ²≥ε ∩εΩαταφε φΦµσ, α τα≥σ∞ ΦφΦ÷ΦΦ≡≤σ≥ ∩σ≡σ≡Φ±εΓΩ≤ εΩφα α∩δσ≥α: txta.appendText(szReceived + "\r\n"); repaint(); ╟α∞σ≥Φ∞, ≈≥ε Φ±∩εδⁿτεΓαφφ√Θ φα∞Φ ±∩ε±εß ∩σ≡σΣα≈Φ Σαφφ√⌡ ∩εΣ⌡εΣΦ≥ ≥εδⁿΩε Σδ δα≥Φφ±ΩΦ⌡ ±Φ∞ΓεδεΓ. ┼±δΦ Γα∞ φ≤µφε ∩σ≡σΣαΓα≥ⁿ ±Φ∞Γεδ√ ΩΦ≡ΦδδΦ÷√, ±δσΣ≤σ≥ ∩≡σεß≡ατεΓ√Γα≥ⁿ Φ⌡ Φτ ΩεΣΦ≡εΓΩΦ UNICODE, φα∩≡Φ∞σ≡, Γ πσΩ±αΣσ÷Φ∞αδⁿφ≤■ ΩεΣΦ≡εΓΩ≤, α Γ ∩≡επ≡α∞∞σ CGI Γ√∩εδφ ≥ⁿ εß≡α≥φεσ ∩≡σεß≡ατεΓαφΦσ. └φαδεπΦ≈φ≤■ ∞σ≥εΣΦΩ≤ ∞εµφε ∩≡Φ∞σφ ≥ⁿ Φ Σδ ∩σ≡σΣα≈Φ ∩≡εΦτΓεδⁿφ√⌡ ΣΓεΦ≈φ√⌡ Σαφφ√⌡. ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡επ≡α∞∞√ CGI store.exe╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡επ≡α∞∞√ CGI store.exe ε≈σφⁿ ∩≡ε±≥ Φ ∩εΩαταφ Γ δΦ±≥Φφπσ 7. ╦Φ±≥Φφπ 7. ╘αΘδ store.c #include <windows.h> #include <tchar.h> #include <wchar.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void main(int argc, char *argv[]) { int nInDatasize; char * szMethod; char szBuf[2000]; FILE *fDatabase; CRITICAL_SECTION csAddRecord; szMethod = getenv("REQUEST_METHOD"); if(!strcmp(szMethod, "POST")); { nInDatasize = atoi( getenv("CONTENT_LENGTH")); fread(szBuf, nInDatasize, 1, stdin); szBuf[nInDatasize] = '\0'; InitializeCriticalSection(&csAddRecord); EnterCriticalSection(&csAddRecord); fDatabase = fopen("c:\\EMAIL.DAT", "a+"); if(fDatabase != NULL) { fputs(szBuf, fDatabase); fclose(fDatabase); } LeaveCriticalSection(&csAddRecord); DeleteCriticalSection(&csAddRecord); printf( "Content-type: text/plain\r\n\r\n"); printf("Stored information: %s", szBuf); } } ▌≥ε≥ ≥σΩ±≥ ∩εΣπε≥εΓδσφ Σδ ≡αßε≥√ Γ ±≡σΣσ Windows 95 ΦδΦ Windows NT, ≥αΩ ΩαΩ Σδ ±Φφ⌡≡εφΦτα÷ΦΦ Σε±≥≤∩α Ω ⌠αΘδ≤ ∞√ Φ±∩εδⁿτεΓαδΦ ±∩σ÷Φ⌠Φ≈σ±ΩΦσ Σδ ²≥Φ⌡ ε∩σ≡α÷Φεφφ√⌡ ±Φ±≥σ∞ ⌠≤φΩ÷ΦΦ ≡αßε≥√ ± Ω≡Φ≥Φ≈σ±ΩΦ∞Φ ±σΩ÷Φ ∞Φ. ╤Γε■ ≡αßε≥≤ ∩≡επ≡α∞∞α CGI φα≈Φφασ≥ ± αφαδΦτα ∩σ≡σ∞σφφεΘ ±≡σΣ√ REQUEST_METHOD. ╙ßσΣΦΓ°Φ±ⁿ, ≈≥ε ∩≡Φ τα∩≤±Ωσ ∩≡επ≡α∞∞√ σΘ ∩σ≡σΣαδΦ Σαφφ√σ ∞σ≥εΣε∞ POST, ∩≡επ≡α∞∞α ε∩≡σΣσδ σ≥ ≡ατ∞σ≡ ²≥Φ⌡ Σαφφ√⌡ Φ±⌡εΣ Φτ ±εΣσ≡µΦ∞επε ∩σ≡σ∞σφφεΘ ±≡σΣ√ CONTENT_LENGTH. ─αδσσ ∩≡επ≡α∞∞α ±≈Φ≥√Γασ≥ ±εε≥Γσ≥±≥Γ≤■∙σσ ΩεδΦ≈σ±≥Γε ßαΘ≥ Σαφφ√⌡ Φτ ±≥αφΣα≡≥φεπε ∩ε≥εΩα ΓΓεΣα, τα∩Φ±√Γασ≥ Φ⌡ Γ ⌠αΘδ. ╟α≥σ∞, ∩ε±δσ ΣεßαΓδσφΦ ταπεδεΓΩα "Stored information:", ∩≡επ≡α∞∞α CGI τα∩Φ±√Γασ≥ ∩εδ≤≈σφφ≤■ ±≥≡εΩ≤ Γ ±≥αφΣα≡≥φ√Θ Γ√⌡εΣφεΘ ∩ε≥εΩ, ∩σ≡σΣαΓα σσ ≥αΩΦ∞ εß≡ατε∞ α∩δσ≥≤ Form. ╥αΩ ΩαΩ ∩≡Φ ≡σαδⁿφεΘ ≡αßε≥σ Γ ±σ≥Φ Internet Γα°≤ ∩≡επ≡α∞∞≤ CGI ∞επ≤≥ εΣφεΓ≡σ∞σφφε τα∩≤±≥Φ≥ⁿ φσ±ΩεδⁿΩε ∩εδⁿτεΓα≥σδσΘ, Σδ ±Φφ⌡≡εφΦτα÷ΦΦ εßφεΓδσφΦ ⌠αΘδα ßατ√ Σαφφ√⌡ ∞√ ∩≡Φ∞σφΦδΦ Ω≡Φ≥Φ≈σ±Ω≤■ ±σΩ÷Φ■. ┬ ≡στ≤δⁿ≥α≥σ ± ⌠αΘδε∞ ∞εµσ≥ ≡αßε≥α≥ⁿ Γ δ■ßεΘ ∞ε∞σφ≥ Γ≡σ∞σφΦ ≥εδⁿΩε εΣφα Ωε∩Φ ∩≡επ≡α∞∞√ CGI. ┼∙σ εΣφε τα∞σ≈αφΦσ Ωα±ασ≥± ∩≤≥Φ Ω ⌠αΘδ≤, Ωε≥ε≡√Θ Γ φα°σ∞ ±δ≤≈ασ ±ετΣασ≥± Γ Ωε≡φσΓε∞ Ωα≥αδεπσ ΣΦ±Ωα C:. ╧≡Φ ≤±≥αφεΓΩσ ∩≡επ≡α∞∞√ CGI φα ±σ≡Γσ≡ Γα∞ φσεß⌡εΣΦ∞ε εßσ±∩σ≈Φ≥ⁿ Σε±≥≤∩ φα τα∩Φ±ⁿ Ω Ωα≥αδεπ≤, Γ Ωε≥ε≡ε∞ ≡α±∩εδαπασ≥± ⌠αΘδ, Σδ ≤Σαδσφφ√⌡ ∩εδⁿτεΓα≥σδσΘ. ╬ ≥ε∞, ΩαΩ ²≥ε ±Σσδα≥ⁿ, Γ√ ∞εµσ≥σ ≤τφα≥ⁿ Φτ ΣεΩ≤∞σφ≥α÷ΦΦ φα Γα° ±σ≡Γσ≡ Web. |